package com.study;

import java.util.Arrays;

/**
 * @program: leetcode
 * @author: jzhou
 * @date: 2022-11-01 10:13
 * @version: 1.0
 * @description: 删除排序数组中的重复项
 * 原地删除重复出现的元素，使每个元素只出现一次，返回新数组的长度
 *
 * 解法：使用双指针
 *      一个慢指针（i）指向头部，一个快指针（j）指向下一个元素
 *      当 arr[i] != arr[j]时， arr[j] 赋值给 arr[++i]
 *      当 arr[i] == arr[j]时， 将 j++
 *      重复上述操作，最后返回 i + 1 值及为新数组长度
 **/
public class SortedArrayDuplicates {
	public static void main(String[] args) {

		int[] arr = {1,2,3,3,3,3,4,4,4,4,5};

		System.out.println(removeDuplicates(arr));

		System.out.println(Arrays.toString(arr));
	}

	private static int removeDuplicates(int[] arr) {
		int i = 0;
		for (int j = 1; j < arr.length; j++ ) {
			if (arr[i] != arr[j]) {
				arr[++i] = arr[j];
			}
		}
		return i + 1;
	}

	private static int removeDuplicates1(int[] arr){
		int  i = 0;
		for (int j = i + 1; j < arr.length; j++) {
			if (arr[i] != arr[j]){
				arr[++i] = arr[j];
			}
		}
		return i + 1;
	}
}
